package com.nageoffer.jobtrain.projects.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nageoffer.jobtrain.projects.dao.entity.UserDO;
import com.nageoffer.jobtrain.projects.dto.req.UserBlockingReqDTO;
import com.nageoffer.jobtrain.projects.dto.req.UserEditUserInfoReqDTO;
import com.nageoffer.jobtrain.projects.dto.req.UserLiftingReqDTO;
import com.nageoffer.jobtrain.projects.dto.req.UserPageReqDTO;
import com.nageoffer.jobtrain.projects.dto.resp.UserDetailRespDTO;
import com.nageoffer.jobtrain.projects.dto.resp.UserInfoRespDTO;
import com.nageoffer.jobtrain.projects.dto.resp.UserPageRespDTO;
import org.springframework.web.multipart.MultipartFile;

/**
 * 用户数据接口层
 * author：唐晨
 */
public interface UserService extends IService<UserDO> {
    /**
     * 分页查询用户详情列表
     *
     * @param requestParam 用户分页查询入参
     * @return 用户分页查询返回列表
     */
    IPage<UserPageRespDTO> pageUserList(UserPageReqDTO requestParam);

    /**
     * 用户状态拉黑功能
     *
     * @param requestParam 拉黑用户状态请求入参
     */
    void blockingUserStatus(UserBlockingReqDTO requestParam);

    /**
     * 用户状态解禁功能
     *
     * @param requestParam 解禁用户状态请求入参
     */
    void liftingUserStatus(UserLiftingReqDTO requestParam);

    /**
     * 用户退出登录状态
     *
     * @return 用户是否成功退出登录
     */
    Boolean logoutUser();

    /**
     * 获取用户详情
     *
     * @return 用户详情响应
     */
    UserDetailRespDTO detailUser();

    /**
     * 获取用户个人信息详情
     *
     * @return 用户个人信息详情响应
     */
    UserInfoRespDTO getUserInfo();

    /**
     * 修改编辑个人信息详情
     *
     * @param requestParam 修改编辑个人信息详情请求入参
     */
    void editUserInfo(UserEditUserInfoReqDTO requestParam);

    /**
     * 实现用户头像上传功能
     *
     * @param multipartFile 头像上传入参
     */
    void upLoadUserHeadShot(MultipartFile multipartFile);
}
